home *** CD-ROM | disk | FTP | other *** search
/ PsL Monthly 1993 December / PSL Monthly Shareware CD-ROM (December 1993).iso / prgmming / dos / pascal / dolrwrd.com / DOLRWORD.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1989-12-10  |  7.3 KB  |  258 lines

  1. Unit DolrWord;
  2.  
  3. Interface
  4.  
  5. Uses Dos;
  6.  
  7. function DollarWord(StrToConv : string) : string;
  8.  
  9. implementation
  10.  
  11. var
  12.   Dollar : string[6];
  13.   Cents : string[2];
  14.   BuildStr : string[120];
  15.   NumbStr : string[2];
  16.   DollarInt : longint;
  17.   Code : integer;
  18.   TmpDollar : char;
  19.  
  20. function DStr(StrToConv : string) : string;
  21.   var
  22.     I : integer;
  23.     TmpStr : string[6];
  24.   
  25.   begin
  26.     I := 1;
  27.     TmpStr := '';
  28.     for I := 1 to Length(StrToConv) do
  29.       begin
  30.         if StrToConv[I] <> ',' then
  31.           begin
  32.             if StrToConv[I] = '.' then
  33.               begin
  34.                 DStr := TmpStr;
  35.                 exit;
  36.               end
  37.             else TmpStr := TmpStr + StrToConv[I];
  38.           end;
  39.       end;
  40.   end;  
  41.  
  42. function CStr(StrToConv : string) : string;
  43.   var
  44.     I : integer;
  45.     TmpStr : string[6];
  46.  
  47.   begin
  48.     I := 0;
  49.     TmpStr := '';
  50.     Repeat
  51.       I := I + 1;
  52.     Until StrToConv[I] = '.';
  53.     I := I + 1;
  54.     for I := I to Length(StrToConv) do TmpStr := TmpStr + StrToConv[I];
  55.     if Length(TmpStr) = 1 then TmpStr := TmpStr + '0';
  56.     CStr := TmpStr;
  57.   end;
  58.  
  59. function GetSingles(Dollar : char) : string;
  60.   begin
  61.     Case Dollar of
  62.       '1' : GetSingles := 'One';
  63.       '2' : GetSingles := 'Two';
  64.       '3' : GetSingles := 'Three';
  65.       '4' : GetSingles := 'Four';
  66.       '5' : GetSingles := 'Five';
  67.       '6' : GetSingles := 'Six';
  68.       '7' : GetSingles := 'Seven';
  69.       '8' : GetSingles := 'Eight';
  70.       '9' : GetSingles := 'Nine';
  71.     else Getsingles := ''
  72.     end;
  73.   end;
  74.  
  75. function GetTeens(Dollar : char) : string;
  76.   begin
  77.     Case Dollar of
  78.       '0' : GetTeens := 'Ten';
  79.       '1' : GetTeens := 'Eleven';
  80.       '2' : GetTeens := 'Twelve';
  81.       '3' : GetTeens := 'Thirteen';
  82.       '4' : GetTeens := 'Fourteen';
  83.       '5' : GetTeens := 'Fifteen';
  84.       '6' : GetTeens := 'Sixteen';
  85.       '7' : GetTeens := 'Seventeen';
  86.       '8' : GetTeens := 'Eighteen';
  87.       '9' : GetTeens := 'Nineteen';
  88.     else GetTeens := ''
  89.     end;
  90.   end;
  91.  
  92. function GetTens(Dollar : char) : string;
  93.   begin
  94.     Case Dollar of
  95.       '2' : GetTens := 'Twenty';
  96.       '3' : GetTens := 'Thirty';
  97.       '4' : GetTens := 'Fourty';
  98.       '5' : GetTens := 'Fifty';
  99.       '6' : GetTens := 'Sixty';
  100.       '7' : GetTens := 'Seventy';
  101.       '8' : GetTens := 'Eighty';
  102.       '9' : GetTens := 'Ninety';
  103.     else GetTens := ''
  104.     end;
  105.   end;
  106.  
  107. function DollarWord;
  108. begin
  109.   Dollar := DStr(StrToConv);
  110.   Cents := CStr(StrToConv);
  111.   Val(Dollar,DollarInt,Code);
  112.   if DollarInt = 0 then
  113.     begin
  114.       BuildStr := 'None ';
  115.       BuildStr := BuildStr + ' & ' + Cents + '/100';
  116.       DollarWord := BuildStr;
  117.       exit;
  118.      end;
  119.   if (DollarInt >= 1) and (DollarInt <= 9) then
  120.     begin
  121.       TmpDollar := Dollar[1];
  122.       BuildStr := GetSingles(TmpDollar);
  123.       BuildStr := BuildStr + ' & ' + Cents + '/100';
  124.       DollarWord := BuildStr;
  125.       exit;
  126.      end;
  127.   if (DollarInt >= 10) and (DollarInt <= 19) then
  128.     begin
  129.       TmpDollar := Dollar[2];
  130.       BuildStr := GetTeens(TmpDollar);
  131.       BuildStr := BuildStr + ' & ' + Cents + '/100';
  132.       DollarWord := BuildStr;
  133.       exit;
  134.     end;
  135.   if (DollarInt >= 20) and (DollarInt <= 99) then
  136.     begin
  137.       TmpDollar := Dollar[1];
  138.       BuildStr := GetTens(TmpDollar);
  139.       If TmpDollar <> '0' then BuildStr := BuildStr + ' ';
  140.       TmpDollar := Dollar[2];
  141.       BuildStr := BuildStr + GetSingles(TmpDollar);
  142.       BuildStr := BuildStr + ' & ' + Cents + '/100';
  143.       DollarWord := BuildStr;
  144.       exit;
  145.     end;
  146.   if (DollarInt >= 100) and (DollarInt <= 999) then
  147.     begin
  148.       TmpDollar := Dollar[1];
  149.       BuildStr := GetSingles(TmpDollar) + ' Hundred ';
  150.       TmpDollar := Dollar[2];
  151.       if TmpDollar = '1' then
  152.         begin
  153.           TmpDollar := Dollar[3];
  154.           BuildStr := BuildStr + GetTeens(TmpDollar);
  155.           BuildStr := BuildStr + ' & ' + Cents + '/100';
  156.           DollarWord := BuildStr;
  157.           exit;
  158.         end
  159.       else BuildStr := BuildStr + GetTens(TmpDollar);
  160.       If TmpDollar <> '0' then BuildStr := BuildStr + ' ';
  161.       TmpDollar := Dollar[3];
  162.       BuildStr := BuildStr + GetSingles(TmpDollar);
  163.       BuildStr := BuildStr + ' & ' + Cents + '/100';
  164.       DollarWord := BuildStr;
  165.       exit;
  166.     end;
  167.   if (DollarInt >= 1000) and (DollarInt <= 9999) then
  168.     begin
  169.       TmpDollar := Dollar[1];
  170.       BuildStr := GetSingles(TmpDollar) + ' Thousand ';
  171.       TmpDollar := Dollar[2];
  172.       BuildStr := BuildStr + GetSingles(TmpDollar) + ' Hundred ';
  173.       TmpDollar := Dollar[3];
  174.       if TmpDollar = '1' then
  175.         begin
  176.           TmpDollar := Dollar[4];
  177.           BuildStr := BuildStr + GetTeens(TmpDollar);
  178.           BuildStr := BuildStr + ' & ' + Cents + '/100';
  179.           DollarWord := BuildStr;
  180.           exit;
  181.         end
  182.       else BuildStr := BuildStr + GetTens(TmpDollar);
  183.       If TmpDollar <> '0' then BuildStr := BuildStr + ' ';
  184.       TmpDollar := Dollar[4];
  185.       BuildStr := BuildStr + GetSingles(TmpDollar);
  186.       BuildStr := BuildStr + ' & ' + Cents + '/100';
  187.       DollarWord := BuildStr;
  188.       exit;
  189.     end;
  190.   if (DollarInt >= 10000) and (DollarInt <= 99999) then
  191.     begin
  192.       TmpDollar := Dollar[1];
  193.       if TmpDollar = '1' then BuildStr := GetTeens(TmpDollar)
  194.         + ' Thousand '
  195.       else
  196.         begin
  197.           BuildStr := GetTens(TmpDollar) + ' ';
  198.           TmpDollar := Dollar[2];
  199.           BuildStr := BuildStr + GetSingles(TmpDollar)
  200.             + ' Thousand ';
  201.         end;
  202.       TmpDollar := Dollar[3];
  203.       BuildStr := BuildStr + GetSingles(TmpDollar) + ' Hundred ';
  204.       TmpDollar := Dollar[4];
  205.       if TmpDollar = '1' then
  206.         begin
  207.           TmpDollar := Dollar[5];
  208.           BuildStr := BuildStr + GetTeens(TmpDollar);
  209.           BuildStr := BuildStr + ' & ' + Cents + '/100';
  210.           DollarWord := BuildStr;
  211.           exit;
  212.         end
  213.       else BuildStr := BuildStr + GetTens(TmpDollar);
  214.       If TmpDollar <> '0' then BuildStr := BuildStr + ' ';
  215.       TmpDollar := Dollar[5];
  216.       BuildStr := BuildStr + GetSingles(TmpDollar);
  217.       BuildStr := BuildStr + ' & ' + Cents + '/100';
  218.       DollarWord := BuildStr;
  219.       exit;
  220.     end;
  221.   if (DollarInt >= 100000) and (DollarInt <= 990999) then
  222.     begin
  223.       TmpDollar := Dollar[1];
  224.       BuildStr := GetSingles(TmpDollar) + ' Hundred ';
  225.       TmpDollar := Dollar[2];
  226.       if TmpDollar = '1' then BuildStr := BuildStr + GetTeens(TmpDollar)
  227.         + ' Thousand '
  228.       else
  229.         begin
  230.           BuildStr := BuildStr + GetTens(TmpDollar) + ' ';
  231.           TmpDollar := Dollar[3];
  232.           BuildStr := BuildStr + GetSingles(TmpDollar)
  233.             + ' Thousand ';
  234.         end;
  235.       TmpDollar := Dollar[4];
  236.       BuildStr := BuildStr + GetSingles(TmpDollar) + ' Hundred ';
  237.       TmpDollar := Dollar[5];
  238.       if TmpDollar = '1' then
  239.         begin
  240.           TmpDollar := Dollar[6];
  241.           BuildStr := BuildStr + GetTeens(TmpDollar);
  242.           BuildStr := BuildStr + ' & ' + Cents + '/100';
  243.           DollarWord := BuildStr;
  244.           exit;
  245.         end
  246.       else BuildStr := BuildStr + GetTens(TmpDollar);
  247.       If TmpDollar <> '0' then BuildStr := BuildStr + ' ';
  248.       TmpDollar := Dollar[6];
  249.       BuildStr := BuildStr + GetSingles(TmpDollar);
  250.       BuildStr := BuildStr + ' & ' + Cents + '/100';
  251.       DollarWord := BuildStr;
  252.       exit;
  253.     end;
  254. end;
  255.  
  256. begin
  257. end.
  258.